package user_api

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"giv-vue-blog/global"
	"giv-vue-blog/models/ctype"
	"giv-vue-blog/models/res"
	"giv-vue-blog/service/user_ser"
)

type CreateUserRequest struct {
	NickName string `json:"nick_name" msg:"请输入用户昵称" binding:"required"`
	UserName string `json:"user_name" msg:"请输入用户名" binding:"required,user_name" `
	Password string `json:"password" msg:"请输入密码" binding:"required,password"`
	Tel      string `json:"tel" msg:"请输入手机号" binding:"required,TelValidator"`
	//Addr       string           `json:"addr" msg:"请输入地址" binding:"required"`
	Role       ctype.Role       `json:"role" msg:"请输入角色" binding:"required,RoleValidator"`
	SignStatus ctype.SignStatus `json:"sign_status" msg:"请输入注册来源" binding:"required,SignStatusValidator"`
}

// CreateUserView 创建用户接口
// @Summary 创建用户
// @Description 创建用户，需要输入用户昵称、用户名、密码、手机号、角色和注册来源
// @Tags 用户管理
// @Accept json
// @Produce json
// @Param data body CreateUserRequest true "请求参数"
// @Router /api/user_create [post]
// @Success 200 {string} string "用户创建成功"
// @Failure 400 {object} res.Response "请求参数错误"
// @Failure 500 {object} res.Response "服务器内部错误"
func (UserApi) CreateUserView(c *gin.Context) {
	var cr CreateUserRequest
	err := c.ShouldBindJSON(&cr)
	if err != nil {
		res.FailedWithError(err, &cr, c)
		return
	}
	////判断用户是否存在
	//var userModel models.UserModel
	//count := global.DB.Where("tel =?", cr.Tel).First(&userModel).RowsAffected
	//if count != 0 {
	//	global.Log.Error(err)
	//	res.FailedWithMsg("用户已存在", c)
	//	return
	//}
	//hashPwd := pwd.HashAndSalt(cr.Password)
	////方案一 默认头像
	//avatar := "/uploads/avatar/default.png"
	//err = global.DB.Create(&models.UserModel{
	//	NickName:   cr.NickName,
	//	UserName:   cr.UserName,
	//	Password:   hashPwd,
	//	Avatar:     avatar,
	//	Tel:        cr.Tel,
	//	Addr:       cr.Addr,
	//	IP:         c.ClientIP(),
	//	Role:       cr.Role,
	//	SignStatus: cr.SignStatus,
	//}).Error
	//if err != nil {
	//	global.Log.Error(err)
	//	res.FailedWithMsg("用户创建失败", c)
	//	return
	//}
	err = user_ser.UserService{}.CreateUser(cr.UserName, cr.NickName, cr.Password, cr.Tel, c.ClientIP(), cr.Role)
	if err != nil {
		global.Log.Error(err)
		res.FailedWithMsg(err.Error(), c)
		return
	}
	res.OkWithMsg(fmt.Sprintf("用户%s创建成功", cr.UserName), c)
	return
}
